package com.starbooks.tmail.config;

import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author starbooks
 */
public class MyHandlerInterceptor implements org.springframework.web.servlet.HandlerInterceptor {

  // 其返回值为false时，会中断后续的所有操作

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    //System.out.println("=====>（1）在请求处理之前调用，即在Controller方法调用之前！");
    return true;
  }

  // 该方法会在控制器方法调用之后，且解析视图之前执行。可以通过此方法对请求域中的模型和视图做出进一步的修改

  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    //System.out.println("=====>(1)在请求处理之后调用，即在controller方法执行之后调用");
  }

  // 该方法在整个请求完成，即视图渲染结束之后执行。可以通过此方法实现一些资源清理、记录日志信息等工作

  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    //System.out.println("=====>(1)在整个请求之后调用，即在dispatcherServlet渲染了对应的视图之后（主要是进行资源清理工作）");
  }
}